package com.linchong.sort;

/**
 * @BelongsProject:Algorithm
 * @BelongsPackage:com.linchong.sort
 * @Author:linchong
 * @CreateTime:2019-01-04 22:11
 * @Description:选择排序
 * 思想：双重循环，一层循环取值，二层循环找一个最小/大值
 * 最好/最坏/平均时间复杂度：O(n*n)
 * 空间复杂度：O(1)
 * 是否稳定：不稳定
 * 是否受初始化数据影响：不受
 */
public class SelectionSort {
    public  static void selectionSort(int[] arr,int n){
        int i,j;
        int min;
        for(i = 0;i<n-1;i++){
            min = i;
            for(j = i+1;j<n;j++){
                if(arr[j]<arr[min]){
                  min = j;
                }
            }
            swap(arr,i,min);
        }
    }

//    private static void swap(int[] arr, int i, int j) {
//        arr[i] = arr[i] ^ arr[j];
//        arr[j] = arr[i] ^ arr[j];
//        arr[i] = arr[i] ^ arr[j];
//    }
private static void swap(int[] arr, int i, int r) {
    int temp = arr[i];
    arr[i] = arr[r];
    arr[r] = temp;
}

    public static void main(String[] args) {
        int[] arr = {1,6,3,5,8};
        selectionSort(arr,arr.length);
        for (int i : arr) {
            System.out.print(i+" ");
        }
    }
}
